লগিং হল একটি অত্যন্ত গুরুত্বপূর্ণ কার্যক্রম যেটি অ্যাপ্লিকেশনের কর্মক্ষমতা মনিটর করার জন্য ব্যবহৃত হয়। ASP.Net অ্যাপ্লিকেশনগুলিতে ডিফল্ট লগিং ফিচার ব্যবহারের পাশাপাশি থার্ড-পার্টি লগিং টুলস যেমন NLog এবং Serilog ব্যবহার করা হয়। এগুলি আরো উন্নত লগিং ফিচার প্রদান করে, যেমন আরও ডিটেইলড লগিং, ফাইল/ডাটাবেসে লগ সংরক্ষণ, এবং লগের ফিল্টারিং।
১. NLog
NLog হল একটি শক্তিশালী এবং কনফিগারেবল লগিং ফ্রেমওয়ার্ক যা ASP.Net অ্যাপ্লিকেশনে লগিং সম্পাদন করতে ব্যবহৃত হয়। এটি বিভিন্ন আউটপুট টার্গেটে লগ পাঠাতে সক্ষম, যেমন ফাইল, ডাটাবেস, কনসোল, ইত্যাদি।
NLog ইনস্টলেশন এবং কনফিগারেশন
- NLog প্যাকেজ ইনস্টল করা:
NuGet থেকে NLog ইনস্টল করতে পারেন:
Install-Package NLog.Web.AspNetCore
NLog কনফিগারেশন ফাইল তৈরি করা:
nlog.configনামে একটি কনফিগারেশন ফাইল তৈরি করুন এবং এটি wwwroot ফোল্ডারে রাখুন।
উদাহরণ
nlog.config:<?xml version="1.0" encoding="utf-8"?> <configuration> <targets> <target name="logfile" xsi:type="File" fileName="logs/logfile.txt" /> </targets> <rules> <logger name="*" minlevel="Info" writeTo="logfile" /> </rules> </configuration>NLog ব্যবহার করা:
- কন্ট্রোলার বা অন্য যেকোনো স্থানে NLog ব্যবহার করতে, প্রথমে
ILoggerইনজেক্ট করুন:
private static readonly NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger(); public IActionResult Index() { Logger.Info("This is an info log message."); return View(); }- কন্ট্রোলার বা অন্য যেকোনো স্থানে NLog ব্যবহার করতে, প্রথমে
২. Serilog
Serilog একটি আধুনিক, কাঠামোগত লগিং টুল যা JSON বা অন্যান্য কাঠামোগত ফরম্যাটে লগ রেকর্ড করতে সক্ষম। এটি এসিনক্রোনাস লগিং সমর্থন করে এবং প্রাথমিকভাবে খুব ভাল কনফিগারেশন সক্ষমতা প্রদান করে।
Serilog ইনস্টলেশন এবং কনফিগারেশন
- Serilog প্যাকেজ ইনস্টল করা:
NuGet থেকে Serilog এবং এর ASP.Net Core ইন্টিগ্রেশন প্যাকেজ ইনস্টল করুন:
Install-Package Serilog.AspNetCore Install-Package Serilog.Sinks.File
Serilog কনফিগারেশন:
Program.csঅথবাStartup.csফাইলে Serilog কনফিগারেশন করুন:
using Serilog; public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .UseSerilog((context, config) => config .WriteTo.Console() .WriteTo.File("logs/logfile.txt", rollingInterval: RollingInterval.Day) .ReadFrom.Configuration(context.Configuration));Serilog ব্যবহার করা:
- কন্ট্রোলারে
ILoggerইঞ্জেক্ট করে লগিং ব্যবহার করুন:
private readonly ILogger<HomeController> _logger; public HomeController(ILogger<HomeController> logger) { _logger = logger; } public IActionResult Index() { _logger.LogInformation("This is an information log."); return View(); }- কন্ট্রোলারে
৩. NLog এবং Serilog এর তুলনা
| ফিচার | NLog | Serilog |
|---|---|---|
| কনফিগারেশন | XML ফাইল | কোড বা JSON ফাইল |
| আউটপুট টার্গেট | ফাইল, কনসোল, ডাটাবেস, ইত্যাদি | ফাইল, কনসোল, ডাটাবেস, ক্লাউড |
| কাঠামোগত লগিং | Limited | অত্যন্ত শক্তিশালী এবং কাঠামোগত |
| এসিনক্রোনাস সাপোর্ট | না | হ্যাঁ |
| লাইটওয়েট | হ্যাঁ | হ্যাঁ |
সারাংশ
NLog এবং Serilog উভয়ই শক্তিশালী থার্ড-পার্টি লগিং টুলস, তবে Serilog কাঠামোগত লগিং এবং JSON ফরম্যাটে লগ রেকর্ড করার জন্য বেশি জনপ্রিয়। NLog একটু পুরোনো এবং কনফিগারেশন ফাইলের মাধ্যমে কাজ করার ক্ষেত্রে সহজ হতে পারে। আপনার প্রয়োজন অনুসারে, দুটি লাইব্রেরি থেকেই যে কোন একটি ব্যবহার করতে পারেন, তবে Serilog সাধারণত আধুনিক ASP.Net অ্যাপ্লিকেশনগুলির জন্য বেশি উপযুক্ত।
Read more